#java #minecraft #minecraft-forge
#java #Minecraft #minecraft-forge
Вопрос:
После некоторых серьезных ошибок «nooby», связанных с клиентской и серверной сторонами (я отредактировал свою предыдущую тему), я думаю, что все заработало должным образом. Проблема сейчас в том, что моя регистрация пользовательских элементов, похоже, не работает (она не завершается сбоем, просто, похоже, не имеет никакого эффекта). Я не могу найти примеры того, как правильно это сделать в версии Forge 1.14.4, поэтому любая помощь или идея высоко ценятся.
Если я протестирую его в режиме одиночной игры (из среды Eclipse), он работает отлично, но не при запуске сервера forge (опять же, нигде нет ошибок или результатов отладки).).
РЕДАКТИРОВАТЬ: я перешел на другой метод регистрации (используя DeferredRegister и RegistryObject) … тот же результат: (Он отлично работает в одиночной игре, но не влияет на серверную часть.
Это мой НОВЫЙ метод регистрации внутри моего основного класса:
@Mod("simpleclock")
public class SimpleClock {
public static final String MODID = "simpleclock";
public static final String NAME = "alef's Simple Clock";
public static final String VERSION = "1.5.5";
private static final Logger LOGGER = LogManager.getLogger();
public static World WORLD;
public static PlayerEntity PLAYER;
public static final Item TIMESWORD = new SwordItem(TimeSwordTier.time_sword, 0, -2, new Item.Properties().group(ItemGroup.COMBAT));
public static final DeferredRegister<Item> CONTAINER = new DeferredRegister<>(ForgeRegistries.ITEMS, MODID);
public static final RegistryObject<Item> ITEM = CONTAINER.register("time_sword", () -> TIMESWORD);
public SimpleClock() {
// Register the setup method for modloading
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
// Register the doClientStuff method for modloading
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);
// Register the enqueueIMC method for modloading
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC);
// Register the processIMC method for modloading
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC);
// Register ourselves for server and other game events we are interested in
MinecraftForge.EVENT_BUS.register(this);
// Register items and other stuff
CONTAINER.register(FMLJavaModLoadingContext.get().getModEventBus());
// Load config file
ModLoadingContext.get().registerConfig(net.minecraftforge.fml.config.ModConfig.Type.COMMON, ConfigFile.spec);
}
Это мой класс TimeSwordTier:
public enum TimeSwordTier implements IItemTier {
time_sword(5.0f, 9.0f, 5000, 3, 25, null);
private float attackDamage, efficiency;
private int durability, harvestLevel, enchantability;
private Item repairMaterial;
private static double knockback = 1.5;
private TimeSwordTier(float attackDamage, float efficiency, int durability, int harvestLevel, int enchantability, Item repairMaterial) {
this.attackDamage = attackDamage;
this.efficiency = efficiency;
this.durability = durability;
this.harvestLevel = harvestLevel;
this.enchantability = enchantability;
this.repairMaterial = repairMaterial;
}
@Override
public float getAttackDamage()
{
return this.attackDamage;
}
@Override
public float getEfficiency()
{
return this.efficiency;
}
@Override
public int getEnchantability()
{
return this.enchantability;
}
@Override
public int getHarvestLevel()
{
return this.harvestLevel;
}
@Override
public int getMaxUses()
{
return this.durability;
}
@Override
public Ingredient getRepairMaterial()
{
return Ingredient.fromItems(this.repairMaterial);
}
public static double getKnockback()
{
return TimeSwordTier.knockback;
}
}
Комментарии:
1. РЕШАЕМАЯ: просто удалите «static» отовсюду
2. Пожалуйста, рассмотрите возможность публикации вашего комментария в качестве правильного ответа, чтобы другие увидели, что на него уже был дан ответ.
Ответ №1:
(из комментария)
Удалите «статический» отовсюду