- 12
- 1
- 3
Короче ребят выручайте х100000 раз вас прошу) Суть вот в чем:
Есть переменная hasTaskStarted которая изначально false
Потом в идет проверка на состояние этой переменной, если она false то все ок и запускается таймер попутно приравнивая эту переменную к true(чтобы второй раз не вызвать таймер ибо он крашится тогда) но когда проходит таймер, в run() переменная снова должна стать false, но она ей не становится)) При чем весь код из run() выполняется, но переменная не изменяет свое состояние на false... Я хоть и новичек в джаве и модинге в целом, но с переменными точно накасячить не мог(я так думаю по крайней мере) Код прикладываю ниже. Ребят обьяните мою ошибку пожалуйста, только поспокойней и не нужно агрессии) (Хотя вопрос по любому тупой и я тоже тупой и сдержаться будет трудно, но вы хотябы посторайтесь)))
P.S. гуглинг ничего не дал.
А также не работает удаление предмета(он как бы забирается но потом возрващается в инвентарь) если вы поможете еще и с этим вам не будет цены вообще))
Есть переменная hasTaskStarted которая изначально false
Потом в идет проверка на состояние этой переменной, если она false то все ок и запускается таймер попутно приравнивая эту переменную к true(чтобы второй раз не вызвать таймер ибо он крашится тогда) но когда проходит таймер, в run() переменная снова должна стать false, но она ей не становится)) При чем весь код из run() выполняется, но переменная не изменяет свое состояние на false... Я хоть и новичек в джаве и модинге в целом, но с переменными точно накасячить не мог(я так думаю по крайней мере) Код прикладываю ниже. Ребят обьяните мою ошибку пожалуйста, только поспокойней и не нужно агрессии) (Хотя вопрос по любому тупой и я тоже тупой и сдержаться будет трудно, но вы хотябы посторайтесь)))
P.S. гуглинг ничего не дал.
Main:
package ru.elitecute.ea;
import java.io.File;
import com.typesafe.config.Config;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraftforge.common.config.Configuration;
import ru.elitecute.ea.items.berserk_aura;
@Mod(modid = Main.modid, name = Main.modname, version = Main.version)
public class Main {
public static final String modid = "effectaura";
public static final String modname = "EffectAura";
public static final String version = "1.0";
public static Configuration config;
public static boolean enable_cooldown_for_all;
public static int cooldown;
public static int berserk_cooldown;
public static int lastpush_cooldown;
public static int rushoflife_cooldown;
public static int indestructiblefortress_cooldown;
public static int fastpush_cooldown;
public static int eagleeye_cooldown;
public static int liveforce_cooldown;
public static int natureresistance_cooldown;
public static int leapoffaith_cooldown;
public static int cooldown_timer = 0;
public static int berserk_cooldown_timer = 0;
public static int lastpush_cooldown_timer = 0;
public static int rushoflife_cooldown_timer = 0;
public static int indestructiblefortress_cooldown_timer = 0;
public static int fastpush_cooldown_timer = 0;
public static int eagleeye_cooldown_timer = 0;
public static int liveforce_cooldown_timer = 0;
public static int natureresistance_cooldown_timer = 0;
public static int leapoffaith_cooldown_timer = 0;
public static Item berserk_aura;
public static CreativeTabs tabEa = new CreativeTabs ("Effect Aura") {
@SideOnly(Side.CLIENT)
public Item getTabIconItem() {
return Item.getItemFromBlock(Blocks.grass);
}
};
@EventHandler
public void preInit(FMLPreInitializationEvent preEvent) {
berserk_aura = new berserk_aura();
GameRegistry.registerItem(berserk_aura, "berserk_aura");
config = new Configuration(preEvent.getSuggestedConfigurationFile());
syncConfig();
}
public static void syncConfig() {
enable_cooldown_for_all = config.getBoolean("enable_cooldown_for_all", "options", true, "this option enable mode of one cooldown for all auras(in mili-seconds)");
cooldown = config.getInt("cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for all auras(in mili-seconds)");
berserk_cooldown = config.getInt("berserk_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for berserk aura(in mili-seconds)");
lastpush_cooldown = config.getInt("lastpush_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for lust push aura(in mili-seconds)");
rushoflife_cooldown = config.getInt("rushoflife_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for rush of life aura(in mili-seconds)");
indestructiblefortress_cooldown = config.getInt("indestructiblefortress_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for indestructible fortress aura(in mili-seconds)");
fastpush_cooldown = config.getInt("fastpush_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for fast push aura(in mili-seconds)");
eagleeye_cooldown = config.getInt("eagleeye_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for eagle eye aura(in mili-seconds)");
liveforce_cooldown = config.getInt("liveforce_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for live force aura(in mili-seconds)");
natureresistance_cooldown = config.getInt("natureresistance_cooldown", "cooldown_settings", 1, 60000, 999999, "cooldown for nature resistance aura(in mili-seconds)");
leapoffaith_cooldown = config.getInt("leapoffaith_cooldown", "cooldown_settings", 60000, 1, 999999, "cooldown for leap of faith aura(in mili-seconds)");
if(config.hasChanged()) {
config.save();
}
}
@EventHandler
public void Init(FMLInitializationEvent Event) {
}
@EventHandler
public void postInit(FMLPostInitializationEvent postEvent) {
}
}
berserk_aura:
package ru.elitecute.ea.items;
import java.util.Timer;
import java.util.TimerTask;
import java.util.List;
import com.google.common.eventbus.Subscribe;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.ChatComponentText;
import net.minecraft.world.World;
import net.minecraftforge.common.config.Configuration;
import ru.elitecute.ea.BerserkTask;
import ru.elitecute.ea.Main;
public class berserk_aura extends Item {
BerserkTask berst = new BerserkTask();
Main main = new Main();
Timer timer = new Timer();
TimerTask berserkTask = new BerserkTask();
public berserk_aura() {
super();
this.setMaxStackSize(1);
this.setCreativeTab(Main.tabEa);
this.setUnlocalizedName("berserk_aura");
this.setTextureName("effectaura:berserk_aura");
}
@EventHandler
public void preInit(FMLPreInitializationEvent preEvent) {
}
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) {
par3List.add("После активации вы получите силу I и скорость I на 75 секунд. (Одноразовое использование)");
}
@Subscribe
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
if(world.isRemote) {
System.out.println("isremote test");
if(main.enable_cooldown_for_all) {
System.out.println("for all test");
if(main.cooldown_timer == 0) {
System.out.println("cooldown test");
if(!berst.taskHasStarted) {
System.out.println("has started test");
main.cooldown_timer = main.cooldown;
berst.taskHasStarted = true;
timer.schedule(berserkTask, main.cooldown_timer);
PotionEffect potionEffect1 = new PotionEffect(5, 1500, 0);
player.addPotionEffect(potionEffect1);
PotionEffect potionEffect2 = new PotionEffect(1, 1500, 0);
player.addPotionEffect(potionEffect2);
player.inventory.consumeInventoryItem(main.berserk_aura);
player.addChatMessage(new ChatComponentText("В вас пробуждается сила берсерка!"));
}
}else{
player.addChatMessage(new ChatComponentText("Аура на перезарядке!"));
}
}else{
if(main.berserk_cooldown_timer == 0) {
if(!berst.taskHasStarted) {
main.berserk_cooldown_timer = main.berserk_cooldown;
berst.taskHasStarted = true;
timer.schedule(berserkTask, main.berserk_cooldown_timer);
PotionEffect potionEffect1 = new PotionEffect(5, 1500, 0);
player.addPotionEffect(potionEffect1);
PotionEffect potionEffect2 = new PotionEffect(1, 1500, 0);
player.addPotionEffect(potionEffect2);
player.inventory.consumeInventoryItem(main.berserk_aura);
player.addChatMessage(new ChatComponentText("В вас пробуждается сила берсерка!"));
}
}else{
player.addChatMessage(new ChatComponentText("Аура на перезарядке!"));
}
}
}
return itemStack;
}
}
BerserkTask:
package ru.elitecute.ea;
import java.util.TimerTask;
import net.minecraft.util.ChatComponentText;
import ru.elitecute.ea.Main;
import ru.elitecute.ea.items.berserk_aura;
public class BerserkTask extends TimerTask{
public boolean taskHasStarted = false;
Main main = new Main();
@Override
public void run() {
System.out.println(main.cooldown_timer + " - first test");
System.out.println(main.enable_cooldown_for_all + " - first test");
if(main.enable_cooldown_for_all) {
System.out.println("enabled for all complete");
taskHasStarted = false;
main.cooldown_timer = 0;
}else{
System.out.println("complete");
taskHasStarted = false;
main.berserk_cooldown_timer = 0;
}
System.out.println(main.cooldown_timer + " - second test");
System.out.println(main.enable_cooldown_for_all + " - second test");
}
}