port A LOT

This commit is contained in:
2026-01-10 23:36:28 -05:00
parent dfde4b2315
commit 9a954a0af1
446 changed files with 57881 additions and 71 deletions
@@ -0,0 +1,14 @@
package net.cmr.jurassicrevived.mixin;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.FlowerPotBlock;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import java.util.Map;
@Mixin(FlowerPotBlock.class)
public interface FlowerPotBlockAccessor {
@Accessor("POTTED_BY_CONTENT")
Map<Block, Block> getPottedByContent();
}
@@ -0,0 +1,36 @@
package net.cmr.jurassicrevived.mixin;
import net.cmr.jurassicrevived.entity.ai.DinoEntityBase;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(LivingEntity.class)
public abstract class LivingEntityMixin {
/*? if >1.20.1 {*/
/*@Inject(method = "dropAllDeathLoot", at = @At("HEAD"), cancellable = true)
private void jurassicrevived$preventDropsFromDinoKill(ServerLevel level, DamageSource damageSource, CallbackInfo ci) {
jurassicrevived$handleDinoKill(damageSource, ci);
}
*//*?} else {*/
@Inject(method = "dropAllDeathLoot", at = @At("HEAD"), cancellable = true)
private void jurassicrevived$preventDropsFromDinoKill(DamageSource damageSource, CallbackInfo ci) {
jurassicrevived$handleDinoKill(damageSource, ci);
}
/*?}*/
private void jurassicrevived$handleDinoKill(DamageSource damageSource, CallbackInfo ci) {
LivingEntity victim = (LivingEntity) (Object) this;
if (damageSource.getEntity() instanceof DinoEntityBase attacker && attacker.isCarnivore()) {
// If it's not a player, cancel the loot drop (Dino ate the body)
if (!(victim instanceof Player)) {
ci.cancel();
}
}
}
}
@@ -0,0 +1,34 @@
package net.cmr.jurassicrevived.mixin;
import dev.architectury.registry.menu.MenuRegistry;
import net.cmr.jurassicrevived.screen.ModMenuTypes;
import net.cmr.jurassicrevived.screen.custom.*;
import net.minecraft.client.gui.screens.MenuScreens;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(MenuScreens.class)
public class MenuScreensMixin {
@Inject(method = "<clinit>", at = @At("RETURN"))
private static void onClinit(CallbackInfo ci) {
//? if >1.20.1 {
/*// This runs when MenuScreens class is loaded by the JVM
// Registering here ensures the MenuTypes are already constructed and the registries are ready
MenuRegistry.registerScreenFactory(ModMenuTypes.GENERATOR_MENU.get(), GeneratorScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.DNA_EXTRACTOR_MENU.get(), DNAExtractorScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.DNA_ANALYZER_MENU.get(), DNAAnalyzerScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.FOSSIL_GRINDER_MENU.get(), FossilGrinderScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.FOSSIL_CLEANER_MENU.get(), FossilCleanerScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.DNA_HYBRIDIZER_MENU.get(), DNAHybridizerScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.EMBRYONIC_MACHINE_MENU.get(), EmbryonicMachineScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.EMBRYO_CALCIFICATION_MACHINE_MENU.get(), EmbryoCalcificationMachineScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.INCUBATOR_MENU.get(), IncubatorScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.TANK_MENU.get(), TankScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.POWER_CELL_MENU.get(), PowerCellScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.WOOD_CRATE_MENU.get(), CrateScreen::new);
MenuRegistry.registerScreenFactory(ModMenuTypes.IRON_CRATE_MENU.get(), CrateScreen::new);
*///?}
}
}