port A LOT
This commit is contained in:
@@ -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);
|
||||
*///?}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user