Skip to content

Commit

Permalink
Remap 20241212 - Remapped Code to 1.21.3
Browse files Browse the repository at this point in the history
Remapped codes to 1.21.3. Remapped codes will be implemented in the next commit after this. It could be a partial remapping implementation due to time constraints and other priorities.

[CHANGELOG]
🟢 New remapped source classes are created inside "remappedSrc" directory.
🟡 Updated Fabric Loom version from 1.7 to 1.9 which requires at least Gradle 8.11.
🟡 Updated minimum Minecraft version to 1.21.3.
🟡 Updated mappings to 1.21.3+build.2.
🟡 Updated Fabric Loader version to 0.16.9.
🟡 Updated Fabric dependency version to 0.110.0+1.21.3.
🟡 Updated GeckoLib to version 4.7.1,
🟡 Updated Graddle wrapper to 8.11.
  • Loading branch information
Virus5600 committed Dec 11, 2024
1 parent ef521b1 commit 7c11d05
Show file tree
Hide file tree
Showing 27 changed files with 2,559 additions and 7 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
plugins {
id 'fabric-loom' version '1.7-SNAPSHOT'
id 'fabric-loom' version '1.9-SNAPSHOT'
id 'maven-publish'
}

Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@ org.gradle.parallel=true

# Fabric Properties
# check these on https://fabricmc.net/develop
minecraft_version=1.21
yarn_mappings=1.21+build.9
loader_version=0.15.11
minecraft_version=1.21.3
yarn_mappings=1.21.3+build.2
loader_version=0.16.9

# Mod Properties
mod_version = 1.0.1-beta-1.21
maven_group = com.virus5600
archives_base_name = defensive-measures

# Dependencies
fabric_version=0.100.6+1.21
geckolib_version=4.5.5
fabric_version=0.110.0+1.21.3
geckolib_version=4.7.1
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.virus5600.defensive_measures;

import com.virus5600.defensive_measures.advancement.criterion.ModCriterion;
import com.virus5600.defensive_measures.entity.ModEntities;
import com.virus5600.defensive_measures.item.ModItemGroups;
import com.virus5600.defensive_measures.item.ModItems;
import com.virus5600.defensive_measures.particle.ModParticles;
import com.virus5600.defensive_measures.sound.ModSoundEvents;
import net.fabricmc.api.ModInitializer;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
* Main entry point of the mod.
*
* This class holds the Mod ID, name, and Logger instances, along with common initialization processes and
* utility methods that can be used throughout the mod's development.
*/
public class DefensiveMeasures implements ModInitializer {
/**
* Defines the mod's unique identifier.
*/
public static final String MOD_ID = "dm";
/**
* Defines the mod's name.
*/
public static final String MOD_NAME = "DefensiveMeasures";
/**
* Defines the mod's logger instance.
*/
public static final Logger LOGGER = LoggerFactory.getLogger(DefensiveMeasures.MOD_NAME);

/**
* Main entry point of the mod. Initializes all server side logic.
*/
@Override
public void onInitialize() {
LOGGER.info("INITIALIZING MAIN ENTRY POINT FOR {}...", MOD_NAME);

// Modded Stuff's Registration
ModItemGroups.registerModItemGroups();
ModItems.registerModItems();
ModSoundEvents.registerSoundEvents();
ModCriterion.registerModCriterion();
ModParticles.registerParticles();
ModEntities.registerModEntityAttributes();

// Networking part

LOGGER.info("{} MAIN ENTRY POINT INITIALIZED.", MOD_NAME);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.virus5600.defensive_measures.advancement.criterion;

import com.virus5600.defensive_measures.DefensiveMeasures;

import net.minecraft.advancement.criterion.Criteria;

public class ModCriterion {

public static final TurretItemRetrievedCriterion TURRET_ITEM_RETRIEVED_CRITERION = Criteria.register("turret_item_retrieved", new TurretItemRetrievedCriterion());

public static void registerModCriterion() {
DefensiveMeasures.LOGGER.info("REGISTERING CRITERION FOR {}...", DefensiveMeasures.MOD_NAME);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.virus5600.defensive_measures.advancement.criterion;

import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.virus5600.defensive_measures.DefensiveMeasures;

import net.minecraft.advancement.AdvancementCriterion;
import net.minecraft.advancement.criterion.AbstractCriterion;
import net.minecraft.item.ItemStack;
import net.minecraft.predicate.entity.EntityPredicate;
import net.minecraft.predicate.entity.LootContextPredicate;
import net.minecraft.predicate.item.ItemPredicate;
import net.minecraft.server.network.ServerPlayerEntity;

import java.util.Optional;

public class TurretItemRetrievedCriterion extends AbstractCriterion<TurretItemRetrievedCriterion.Conditions> {
@Override
public Codec<TurretItemRetrievedCriterion.Conditions> getConditionsCodec() {
return TurretItemRetrievedCriterion.Conditions.CODEC;
}

public void trigger(ServerPlayerEntity player, ItemStack stack) {
this.trigger(player, conditions -> conditions.matches(stack));
}

public static record Conditions(Optional<LootContextPredicate> player, Optional<ItemPredicate> item) implements AbstractCriterion.Conditions {
public static final Codec<TurretItemRetrievedCriterion.Conditions> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
EntityPredicate.LOOT_CONTEXT_PREDICATE_CODEC
.optionalFieldOf("player")
.forGetter(TurretItemRetrievedCriterion.Conditions::player),
ItemPredicate.CODEC
.optionalFieldOf("item")
.forGetter(TurretItemRetrievedCriterion.Conditions::item)
)
.apply(instance, TurretItemRetrievedCriterion.Conditions::new)
);

public static AdvancementCriterion<com.virus5600.defensive_measures.advancement.criterion.TurretItemRetrievedCriterion.Conditions> create(ItemPredicate.Builder item) {
return ModCriterion.TURRET_ITEM_RETRIEVED_CRITERION
.create(
new TurretItemRetrievedCriterion.Conditions(
Optional.empty(),
Optional.of(item.build())
)
);
}

public boolean matches(ItemStack stack) {
return this.item.isEmpty() || this.item.get().test(stack);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.virus5600.defensive_measures.entity;

import com.virus5600.defensive_measures.DefensiveMeasures;

import com.virus5600.defensive_measures.entity.turrets.CannonTurretEntity;

import net.fabricmc.fabric.api.object.builder.v1.entity.FabricDefaultAttributeRegistry;

import net.minecraft.entity.EntityType;
import net.minecraft.entity.EntityType.Builder;
import net.minecraft.entity.SpawnGroup;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.util.Identifier;

public class ModEntities {
// TURRETS //
// v1.0.0
public static final EntityType<CannonTurretEntity> CANNON_TURRET = Registry.register(
Registries.ENTITY_TYPE,
Identifier.of(DefensiveMeasures.MOD_ID, "cannon_turret"),
Builder
.create(CannonTurretEntity::new, SpawnGroup.MISC)
.dimensions(1F, 1F)
.eyeHeight(0.51F)
.build()
);

// public static final EntityType<BallistaTurretEntity> BALLISTA = Registry.register(
// Registries.ENTITY_TYPE,
// Identifier.of(DefensiveMeasures.MOD_ID, "ballista"),
// Builder
// .create(BallistaTurretEntity::new, SpawnGroup.MISC)
// .dimensions(1F, 1F)
// .build()
// );
//
// public static final EntityType<MGTurretEntity> MG_TURRET = Registry.register(
// Registries.ENTITY_TYPE,
// Identifier.of(DefensiveMeasures.MOD_ID, "mg_turret"),
// Builder
// .create(MGTurretEntity::new, SpawnGroup.MISC)
// .dimensions(1F, 1F)
// .build()
// );

// PROJECTILES //
// v1.0.0
// public static final EntityType<CannonballEntity> CANNONBALL = Registry.register(
// Registries.ENTITY_TYPE,
// Identifier.of(DefensiveMeasures.MOD_ID, "cannonball"),
// Builder
// .create(CannonballEntity::new, SpawnGroup.MISC)
// .dimensions(EntityDimensions.fixed(0.125f, 0.125f))
// .build()
// );

// public static final EntityType<BallistaArrowEntity> BALLISTA_ARROW = Registry.register(
// Registries.ENTITY_TYPE,
// Identifier.of(DefensiveMeasures.MOD_ID, "ballista_arrow"),
// Builder
// .create(BallistaArrowEntity::new, SpawnGroup.MISC)
// .dimensions(EntityDimensions.fixed(0.125f, 0.125f))
// .build()
// );

// public static final EntityType<MGBulletEntity> MG_BULLET = Registry.register(
// Registries.ENTITY_TYPE,
// Identifier.of(DefensiveMeasures.MOD_ID, "mg_bullet"),
// Builder
// .create(MGBulletEntity::new, SpawnGroup.MISC)
// .dimensions(EntityDimensions.fixed(0.125f, 0.125f))
// .build()
// );

// REGISTRY //
public static void registerModEntityAttributes() {
DefensiveMeasures.LOGGER.info("REGISTERING ENTITY ATTRIBUTES FOR {}...", DefensiveMeasures.MOD_NAME);

// TURRETS //
// v1.0.0
FabricDefaultAttributeRegistry.register(ModEntities.CANNON_TURRET, CannonTurretEntity.setAttributes());
// FabricDefaultAttributeRegistry.register(ModEntities.BALLISTA, BallistaTurretEntity.setAttributes());
// FabricDefaultAttributeRegistry.register(ModEntities.MG_TURRET, MGTurretEntity.setAttributes());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.virus5600.defensive_measures.entity;

public enum TurretMaterial {
METAL,
WOOD
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.virus5600.defensive_measures.entity.ai.goal;

import com.virus5600.defensive_measures.entity.turrets.TurretEntity;

import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.ai.goal.ActiveTargetGoal;
import net.minecraft.entity.mob.Monster;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction;

public class TargetOtherTeamGoal extends ActiveTargetGoal<LivingEntity> {
public TargetOtherTeamGoal(TurretEntity turret) {
super(turret, LivingEntity.class, 10, true, false, (entity) -> {
return entity instanceof Monster;
});
}

public boolean canStart() {
return this.mob.getScoreboardTeam() != null && super.canStart();
}

protected Box getSearchBox(double distance) {
Direction dir = Direction.DOWN;

if (dir.getAxis() == Direction.Axis.X) {
return this.mob.getBoundingBox().expand(4.0, distance, distance);
}

return dir.getAxis() == Direction.Axis.Z
? this.mob.getBoundingBox().expand(distance, distance, 4.0)
: this.mob.getBoundingBox().expand(distance, 4.0, distance);

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.virus5600.defensive_measures.entity.ai.goal;

import net.minecraft.entity.ai.goal.ActiveTargetGoal;
import net.minecraft.entity.player.PlayerEntity;

import com.virus5600.defensive_measures.entity.turrets.TurretEntity;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction;

public class TargetPlayerGoal extends ActiveTargetGoal<PlayerEntity> {
public TargetPlayerGoal(TurretEntity turret) {
super(turret, PlayerEntity.class, true);
}

@Override
public boolean canStart() {
return this.mob.getScoreboardTeam() != null && super.canStart();
}

@Override
protected Box getSearchBox(double distance) {
Direction dir = Direction.DOWN;

if (dir.getAxis() == Direction.Axis.X) {
return this.mob.getBoundingBox().expand(4.0, distance, distance);
}

return dir.getAxis() == Direction.Axis.Z
? this.mob.getBoundingBox().expand(distance, distance, 4.0)
: this.mob.getBoundingBox().expand(distance, 4.0, distance);
}
}
Loading

0 comments on commit 7c11d05

Please sign in to comment.